package com.ctshk.rpc.order.airexpress.service;

import com.ctshk.common.dto.Result;
import com.ctshk.common.dto.payment.CallPayDTO;
import com.ctshk.common.model.AppReq;
import com.ctshk.common.model.TokenUser;
import com.ctshk.common.req.pay.NotifyConsumeReq;
import com.ctshk.rpc.order.airexpress.dto.app.*;
import com.ctshk.rpc.order.airexpress.req.AirportExpressOrderCancelReq;
import com.ctshk.rpc.order.airexpress.req.AirportExpressOrderListReq;
import com.ctshk.rpc.order.airexpress.req.app.AirportExpressOrderAppReq;

import java.util.List;

/**
 * <p>
 * 机场快线订单表 服务类
 * </p>
 *
 * @author 叶冠峰
 * @since 2021-02-23
 */
public interface IAirportExpressOrderAppService {

    Result submit(AirportExpressOrderAppReq airportExpressOrderReq, Long currentUserId, AppReq appReq);

    AirportExpressOrderCacheDTO list(AirportExpressOrderListReq airportExpressOrderListReq);

    /**
     * 支付回调方法(支付模块调用)
     *
     * @param notifyConsumeReq
     * @return
     * @throws Exception
     */
    Result payment(NotifyConsumeReq notifyConsumeReq) throws Exception;

    /**
     * 支付模块查询订单信息
     * @param orderId
     * @return
     */
    CallPayDTO getCallPayInfo(Long orderId);


    Result<AppQueryPayResultDTO> queryPayResultInfo(Long id);

    Result<AppQueryPayResultPcDTO> queryPayResultInfoPc(Long id);

    /**
     * 查询订单支付信息
     *
     * @param id
     * @return
     */
    Result<AirportExpressOrderAppInfoDTO> getInfo(Long id);

    Result<AirportExpressOrderAppQueryDTO> queryDetail(Long id);

    Result airExpressOrderDetailsInit();

    Result airExpressOrderDetailsUpLoad(List<Long> ids);

    Result cacheUpdate(List<Long> ids);

    Result cacheDelete(List<Long> ids);

    Result cacheDeleteAll();
}
